This patch adds the respective configure options to make it possible to
disable libdrm_intel, libdrm_radeon, libdrm_nouveau, and libkms
independently from each other.
https://bugs.freedesktop.org/show_bug.cgi?id=29804
It was using 16bit types to hold the intermiediate
results of the blend, but for high intensity,
low opacity input values it could need up to
17 bits to prevent overflow.
https://bugs.freedesktop.org/show_bug.cgi?id=33129
Another bug in check_for_consoles...
We can't ever write to tty0 directly, because
it is redirected (just like /dev/console). Previously
we would translate the call to tty1, but commit
c40fd792b6
broke that. This commit fixes it again.
Commit 3ec007a482 did not
properly check for success when connecting to the fallback
socket path and instead always failed.
This commit fixes the code to properly check for success and
proceed.
Signed-off-by: Andrey Borzenkov <arvidjaar@gmail.com>
Commit 9de731ed29 caused
plymouth to erroneously drop the leading '\0' on the old
abstract socket making fallback socket support not work.
As result new clients (after update) can no longer communicate
with old running daemons (such as from the initrd).
This commit restores the leading '\0' for both
abstract sockets, trimmed and non-trimmed.
Commit 3ec007a482 did not
check for success with old socket path and failed
always. Properly check for success and proceed.
Signed-off-by: Andrey Borzenkov <arvidjaar@gmail.com>
plymouthd would previously pause() when crashing if debug
mode was enabled so that it could be attached to with a debugger.
pausing indefinitely during boot up is often a bad idea though.
This commit changes it to sleep 30 seconds instead.
In certain error paths plymouth would erroneously set
ISTRIP on the terminal. This is bogus in the same way
the changes fixed by commit ea394383c5
were bogus.
Right now, anytime the server is unable to respond to a
client it puts an ugly message on the screen:
"could not write bytes: Broken pipe"
or some such. That message isn't really useful unless you're
debugging your distribution, so change it from a ply_error to
ply_trace.
The logofile by default is $datadir/plymouth.png
$datadir contains a reference to $datarootdir, so
we need to preexpand the variable in configure, for
the right value to get written to plymouth-populate-initrd.
When not installing in system root, the populate initrd script would not
install the client or daemon due to the paths being hardcoded.
Environmental variables are also now available to override the defaults.
The png_set_gray_1_2_4_to_8 function is deprecated and has been removed
from libpng14. Now png_set_expand_gray_1_2_4_to_8 is used instead which
is compatible with libpng-1.2.9 and greater.
The viewer is useful for seeing boot messages after boot up.
It does this by showing a notification icon in the event there
is a problem during boot.
Notification icons aren't as en vogue as they once were, however.
Ideally, we would have a more structured and semantically aware
way to deal with specific boot problems.
This commit turns the icon off by default. It can still be built
with a --with-log-viewer
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=30724
Reported By: William Jon McCann <william.jon.mccann@gmail.com>
check_for_consoles is a really small function, that has historically
been loaded with bugs.
This commit fixes another bug in it, where the consoles variable is
never initialized to NULL.
The plymouth client talks to the plymouth daemon via
an abstract socket. There aren't a lot of "rules" for
the name of the abstract socket, and so plymouth has just
used "/ply-boot-protocol" for the name. While this is
perfectly valid, a number programs (hal, udev, etc) use
the convention "/org/freedesktop/program".
"/org/freedesktop/plymouthd" is certainly much nicer than
"/ply-boot-protocol" so we're going to change to that, and
fall back to the old name for compatibility.
One other niggle is trailing zeros in the name. The socket
address is stored in a fixed size buffer. Traditionally,
programms would pass the size of the entire socket structure,
including the full size of the aaddress buffer to bind and
connect. This means that any NUL bytes in the address buffer
after the address become part of the address. This means users
looking at /proc/net/unix will see all the extra NUL bytes.
One trick that some programs employee to skirt around this problem,
is to pass only the size of the structure less the trailing
NUL bytes of the address buffer to bind and connected. While maybe
not 100% kosher, this works okay in practice.
plymouth will now use that trick as well.
Before we were using
/ply-boot-protocol\0\0\0\0...\0
for our address which really uglifies /proc/net/unix
and doesn't match what a lot of other programs do.
This commit changes the address to just
/org/freedesktop/plymouthd
which is much nicer.
The socket path is currently defined to be:
#define PLY_BOOT_PROTOCOL_SOCKET_PATH "\0/ply-boot-protocol"
The \0 is because it's an abstract socket, and abstract sockets
have a leading NUL. The code always ignores the NUL though and
adds it back later, so it's not needed.
This commit just drops it.
Right now plymouth listens on an abstract socket with a name
that has a bunch of trailing NUL bytes. These zeroes uglify
the output of /proc/net/unix among other things.
This commit adds support for a new "trimmed abstract" socket
type, which drops the zeroes.
A subsequent commit will actually change plymouthd to use the
new api.
The set-default-theme script was incorrectly redirecting
stderr from a grep command to /null instead of /dev/null.
This causes a /null file to get created on the filesystem.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=30576
Reported by: David LeBlanc <leblancdw@yahoo.com>