When I added commit c12164c162
to copy an entire row at a time to the framebuffer, I miscalculated the
offset to copy from/to. Their may be uninitialized data at the
beginning and end of the temporary row buffer, if only part of the row
is getting copied. We need to make sure we jump passed that junk in
memory and copy just the part that got filled in.
This is just a thin wrapper around the buffer object,
that keeps the data in terms of "elements" instead of
bytes, and always null terminates the result.
This function disowns the bytes in the buffer and returns
them to the caller. It's useful for freeing the buffer, but
keeping the bytes around without doing a copy.
The idea is to make a plugin that matches mockups done by
Mike Langlie. The mockups feature a throbber that spins
in the shape of an infinity sign. This is just a placeholder.
Most of the mockup isn't implemented yet.
ply_frame_buffer_add_area_to_flush_area() computes the wrong area
when the new area right of the current area but is wider than the
old area.
The easiest way to get rectangle intersection right is to just do
it on absolute coordinates and then convert back to width and height
afterwards.
Add:
- Add limited text support
- Make --ask-for-password take a prompt message
- consider making details plugin have stdin hooked
up to the pty instead of tty so input works
- consider making details plugin go back to pretty
plugin if user presses escape
The logic for line editing is a little complicated, so it's
best not to duplicate it across all the plugins. Now we
manage it all from the window. The plugins now access the
various editing events via there vtable, but that's an
extra layer of indirection that doesn't matter given that
we pass the window to the plugins anyway. We should drop
that and just have the plugins register for edit events
directly.
This function is like ply_buffer_remove_bytes, but it
truncates away the end of the buffer instead of shifting
the contents over the start of the buffer.
This version works even in raw mode, by buffering key presses
passed from the window object, and replying to the client
after the user presses enter. There are a lot of layers of
function pointers getting passed around, so it may make
sense to introduce an opaque type for holding the password
and triggering the reply.
We don't want normal users on the system to be able to
manipulate plymouth. This will be especially important
later when we run plymouth for post-bootup reasons. This
patch checks peer credentials and sends back a NAK to
clients who aren't root.
Add:
- Drop all the make ram disk and copy code. That was just to make bolting things
on easier. We can integrate now.
- check peer credentials on client to make sure it's not running unprivileged
plymouthd gets started before the drm modesetting modules are loaded,
so we can't try to access the frame buffer right away. The plan is to
load the drm modules as soon as possible in the initrd and then tell
plymouthd to put up the splash ASAP.
Add:
- Don't start boot-splash automatically, rather wait until given command from client
- Allow plymouth to be started from nash instead of the other way around
Remove:
- add the ability to watch for timeouts in the event loop
This requires keyboard handling to be changed, so that each
plugin can hook in their own keyboard hooks when switching
between them, and also handling escape completely above the boot
splash plugin level.