Right now we assume if we find a /dev/dri/card0 that it will work.
That may not be true. The proprietary nvidia driver, for instance,
provides /dev/dri/card0 but disables modesetting by default.
This commit makes sure we fall back to text mode if /dev/dri/card0
is insufficient for our needs.
https://bugs.freedesktop.org/show_bug.cgi?id=103612
This makes possible to support shipping a self-contained initrd which
completely overrides the plymouth theme. The configuration and theme are
copied to /run by a custom service before plymouth starts, so plymouth
can load the correct config from /run both during bootup and shutdown.
This commit changes the routine which resolves plymouth.defaults' path,
to have it look first in plymouth's runtime directory.
Signed-off-by: João Paulo Rechi Vita <jprvita@endlessm.com>
When a theme is shipped exclusively in the initrd, plymouth will not be
able to load is if it starts the boot splash after the bootup process
already switched from the initrd. One way to make it work is to copy the
theme to plymouth's runtime directory in /run, which is preserved during
switch root.
This commit changes the routine which resolves a theme's path to have it
look first in themes/ under plymouth's runtime directory.
Signed-off-by: João Paulo Rechi Vita <jprvita@endlessm.com>
If the user holds down ESC the system can easily get
overrun toggling details and the theme back and forth.
This commit changes the code to ignore any ESC key events
that come in while ESC is getting processed.
At the moment, libudev is unconditionally linked into plymouth
even if it's configured to be not used.
This commit moves the pkg-config check, so that it doesn't get
made at all if --without-udev is passed.
Right now the renderer keeps its own copy of the device name, which
may be NULL or out of date after the renderer is opened.
This commit makes sure the device name gets updated to be current.
Various bits of fall back code pass the terminal device
as the renderer device. This is wrong, ply_renderer is
a graphical renderer abstraction.
This commit passes NULL in those cases, so each renderer
does what it's configured to do by default.
https://bugs.freedesktop.org/show_bug.cgi?id=99104
This adds a DeviceScale setting to plymouthd.conf. It can be used to
override the device scale detection when setting the
PLYMOUTH_FORCE_SCALE environment variable is too complicated.
https://bugs.freedesktop.org/show_bug.cgi?id=97424
It's quite likely that afer the drm device arrives, the number
of rows and columns in the terminal will change.
This commit makes sure to refresh the terminal state.
If a client opens the drm device, they're given drm master
implicitly. We already explicitly take DRM master when we need it,
so that featuer is unneeded.
Furthermore, it's actively harmful, since fbdev won't let you change
the color palette of the terminal if drm master is held.
This commit makes sure to drop master as soon as we get it from
open().
A regression introduced in 7e37d58be3
means that we only look for DRM devices that appear while we're waiting,
we don't consider any that are already present before we started.
shutdown splash was not appearing because of this.
Solve this by explicitly searching for already-initialized DRM devices as
we start up.
https://bugs.freedesktop.org/show_bug.cgi?id=96560
The show_messages function shows any queued messages sent to the
daemon on the active boot splash. It's currently only ever called
in a place in the code where the splash hasn't yet been assigned,
so it's effectively always a noop.
This commit moves the call a little later so it won't bail immediately.
commit 74346ec268 tried to fix a case where views are
added after the text splash is shown. That commit inadvertently
removed the code that adds a view for a new text display.
This commit adds back the accidentaly excised line.
If a renderer fails to open, then we need to make sure we nullify,
the renderer variable after freeing it, since subsequent code checks
if the renderer is null to know whether or not to proceed with
fallback.
If we're already chugging along, and a new display
gets added make sure to load the view associated with
that display right away.
Using an unloaded view can lead to crashes.
When a new renderer gets created, we should activate it, if the device
manager is already active.
At the moment we call create_pixel_displays_for_renderer which would
implicitly activate it (from a callback), except we call it one line
too early, so the renderer isn't in the list of known renderers yet.
This commit swaps the two lines and also adds an explicit renderer
activation for clarity. For symmetry it makes the same change to
keyboards that it makes to renderers.
If you set PLYMOUTH_THEME_NAME to override the theme in an initrd
(as e.g. lorax does when building upgrade.img), plymouth-populate-initrd
tries to edit plymouthd.conf to enable that theme.
Unfortunately, the existing `sed` line doesn't work if your
plymouthd.conf is empty or all commented out - which is how we currently
ship it.
So before modifying the config, make sure it has a [Daemon] section
header, and a Theme=[placeholder] line for us to modify.
Resolves: RHBZ#1223344
it's unexpected for plymouth to show boot messages on the local console
if there is not console=tty0 on the kernel command line.
This commit fixes that.
https://lists.freedesktop.org/archives/systemd-devel/2015-March/029184.html
As explained there, plymouth watching for coldplug events is not the
behaviour we're looking for.
Replace this with a configurable timeout. We claim DRM devices as soon as
we're aware of them (displaying the splash still subject to ShowDelay),
but legacy framebuffer and text console devices are only claimed after
this new DeviceTimeout.
This avoids an issue where the initramfs finishes (generating a coldplug
event) before udev has informed plymouth of the DRM devices. This was
causing plymouth to activate text mode and ignore the DRM devices appearing
a moment later.
https://bugs.freedesktop.org/show_bug.cgi?id=95356
Some themes like to keep their content in subfolders,
but plymouth-populate-initrd currently fails to copy
those subfolders over to the initrd.
This commit fixes that.
https://bugzilla.gnome.org/show_bug.cgi?id=94883