Ray Strode [Sat, 2 May 2009 04:36:28 +0000 (00:36 -0400)]
[two-step] Add fade to progress animation
One issue with the two-step plugin is that during the initial boot
progress the frames can be updated several seconds apart from each
other. This can look jumpy. We can now optionally fade between
the frames to make the experience be a little smoother.
Ray Strode [Sat, 2 May 2009 03:08:09 +0000 (23:08 -0400)]
[two-step] Pull background color from theme
The OLPC theme looks best when it's white, so we need to be able to
specify the background color from the theme. If the theme doesn't
specify a background color, we fall back to the old behavior of using
the distro default.
Ray Strode [Wed, 29 Apr 2009 18:25:02 +0000 (14:25 -0400)]
[splash] Split splashes into plugins and themes
Some of the plugins (well, the glow plugin) would be a lot more
versatile if they could be reused for multiple splashes with different
images.
This commit splits boot splashes into two parts, the plugin engine which
does all the dirty work, and the theme which says which plugin to use
and optionally how the plugin should work (using plugin specific
key/value pairs)
Ray Strode [Thu, 30 Apr 2009 03:23:12 +0000 (23:23 -0400)]
[libply] Add new keyfile class
This is a very lame keyfile parser. We'll be able to use it to load
some metadata about the plugins.
The idea is that plugins will shift to being engines that can be
leveraged from multiple splash themes. This way, for instance, the glow
plugin (which will be renamed) can be used to implement several
splashes.
Charlie Brej [Wed, 13 May 2009 09:31:44 +0000 (10:31 +0100)]
[daemon] Update tests to include compile correctly
Adds ply-list.c/h to all tests automake files which use ply-logger.c.
Adds PLYMOUTH_TIME_DIRECTORY/PLUGIN/THEME_PATH when ply-boot-splash.c is used.
Adds PLY_BOOT_SPLASH_MODE_BOOT_UP to the ply_boot_splash_show call.
Ray Strode [Tue, 5 May 2009 14:59:57 +0000 (10:59 -0400)]
[daemon] Dump log to plymouth-crash.log on crash
This will be useful for debug purposes.
It's implemented by adding the concept of
"filters" to the logger code. Each time a message
is logged it is passed through all registered
filter handlers and then the output of the filters
are what is actually logged.
In this case, we pass the messages through verbatim,
but also redirect them to a debug buffer.
We only do this redirection when plymouth:debug is
used.
Ray Strode [Tue, 5 May 2009 15:57:21 +0000 (11:57 -0400)]
[event-loop] Don't crash by running removed timeouts
We used to run and remove timeouts in a loop. This
breaks the case where the dispatched timeout handler
removes the timeout itself.
We fix it by making timeout handling a two pass thing.
First we find which handlers need to be dispatched,
and move them to their own list. Then we run through
the new list and dispatch the handlers.
Charlie Brej [Tue, 31 Mar 2009 21:13:20 +0000 (22:13 +0100)]
Pause progress by default on password and question queries
Plymouth client ask-for-password and ask-question commands have their option
"--pause-progress" changed to "--dont-pause-progress". By default progress is
paused and "--dont-pause-progress" has to be supplied to not pause.
Ray Strode [Fri, 13 Mar 2009 14:08:15 +0000 (10:08 -0400)]
Support "splash" in addition to "rhgb" on kernel command line
We used "rhgb" because that's what Fedora users were used to
instinctively removing when graphical boot messes up. This
isn't a very intuitive (or very upstream-y) name though.
Charlie Brej [Mon, 9 Mar 2009 14:51:08 +0000 (14:51 +0000)]
Fix password entry dialogue in fade-in plugin.
Previously ply-entry was crashing with an assertion "entry->loop == NULL"
whenever the entry was updated. The change is basicly a copy of the working
version from spinfinity.
This will play a sequence of images from beginning to end at
a fixed frame rate. It differs from the throbber in that it starts
at the 0th image and does not repeat.
With integer options there's no obvious value to mean "unset" like there is for
string types (and to a lesser extent boolean types), so this commit
adds a mechanism.
Charlie Brej [Sat, 3 Jan 2009 22:18:24 +0000 (22:18 +0000)]
Add hashtable and bitarray functionality
Hashtable uses the bitarray to mark the used/dead places in the hash data array.
The hashtable functions follow the general gist of the glib ones. To create a
hashtable you supply the hashing and comparison functions. Examples of direct
and string based indexing are supplied. Hashtable is a single word because there
is no hash_somethingelse but the name may change soon. Notice the compare
function returns a signed int difference rather than an equal bool. This is
because it may be an idea to later migrate the collision system to a tree
sub-structure (currently it is a linear array search with an incrementing step
size).
Charlie Brej [Sat, 3 Jan 2009 21:33:56 +0000 (21:33 +0000)]
Allow client request answers to be greater than 255 characters.
The new limit is 2^32. This only affects the replies to the client. Data sent
along with requests (e.g. password prompt) remain limited to <256 characters.
Two new functions have been added to the ply-utils (ply_read_uint32 and
ply_write_uint32) which receive/transmit 32bit numbers on FD streams.
AFAICT in function ply_boot_client_process_incoming_replies the answer was not
NUL terminated, which may have caused some of the password error bugs.
Charlie Brej [Sat, 3 Jan 2009 19:41:21 +0000 (19:41 +0000)]
Optionally pause progress while asking for a password or a question
The "Rework input methods" commit broke the pausing of the progress bar during
password entry. This commit reimplements that functionality but this time the
pausing is optional, applied with a --pause-progress parameter. The client
program sends the (un)pause commands before/after the password requests.
The default is currently to not pause but that may change quite soon.
This also fixes a couple minor bugs and formatting from "Rework input methods".
Also changed "progress-pause" to "pause-progress" to make it more human
intuitive.
Charlie Brej [Sat, 3 Jan 2009 15:58:39 +0000 (15:58 +0000)]
Make Ctrl+C and Ctrl+D cause the password/question entry to quit
When asking for a password or a question, if the user presses Ctrl+C or Ctrl+D
the backend will reply a NULL. This is interprited as a "Stop asking me". The
client will not repeat the request (even if number of retries hasn't been
reached) and quit with an error exit_status.
Charlie Brej [Sun, 28 Dec 2008 18:34:25 +0000 (18:34 +0000)]
Add progress-pause/unpause commands to halt the progress bar
Progress bar expansion was previously halted on password entry. Now the
progress can be halted whenever the system wishes. This can be useful when the
system notices there is a big task which is normally not present during normal
boots e.g. fsck.
Charlie Brej [Fri, 19 Dec 2008 14:16:33 +0000 (14:16 +0000)]
Rework of the input methods
Previously the splash plugins would deal with password entry, which would mean
that code was repeated and upon splash unload the password entry would be lost.
Now the keyboard strokes are processed with outside the splash, and the plugins
only deal with showing an appropriate user interface. As well as password
entry, the system can ask questions with non hidden text entry and sensing of
keystrokes.
Charlie Brej [Wed, 17 Dec 2008 12:07:57 +0000 (12:07 +0000)]
Ensure ply-buffer data block always terminates with a '\0'
In some instances, ply-buffer did not terminate the data block with a '\0'.
Doing so allows the data to be used as a string. Additionally it now tries
harder to deal with very long additions to the buffer by repeatedly expanding
the capacity and dealing with appends larger than the maximum buffer size.
Ray Strode [Mon, 24 Nov 2008 22:42:11 +0000 (17:42 -0500)]
Allow NULL to be passed to ply_image_free()
free() allows NULL so there is no reason ply_image_free
shouldn't. This also papers over a bug in the solar
plugin that we haven't been able to identify yet.
Ray Strode [Wed, 19 Nov 2008 16:21:13 +0000 (11:21 -0500)]
Add a --rebuild-initrd arg for set-default-plugin
Normally when a user runs plymouth-set-default-plugin
to change which plugin plymouth uses, the change doesn't
take effect until a new kernel is installed and the initrd
is rebuilt.
This new --rebuild-initrd argument forces the currently
running initrd to get rebuilt immediately (bug 18297).
Ray Strode [Fri, 14 Nov 2008 18:25:56 +0000 (13:25 -0500)]
Don't loop forever when tty returns NUL bytes
Somehow a user was running into a case where plymouthd
would busy loop taking 100% cpu. gdb revealed that it
was stuck trying to process keyboard input. This is
apparently because we were looping forever when mbrlen()
got a NUL byte.
Charles Brej [Mon, 17 Nov 2008 14:41:58 +0000 (14:41 +0000)]
Tweak ply-progress to not progress too far beyond where it expects the next status update
This stops the progress from reaching 100% in cases such as fsck and timeouts.
It also averages the progress times from the previous one with the current one
to average out occasional slow tasks.
Charlie Brej [Fri, 14 Nov 2008 16:25:04 +0000 (11:25 -0500)]
Generate background instead of using image
The background image previously was low resolution
and created various artifacts when being upscaled
to the native resolution of the panel. This patch
ditches the background image and instead generates
a similar type of background dynamically, custom
fit to the screen it's being displayed on. As an
added bonus, since we're doing it dynamically, we
can make some of the stars in the background
lightly twinkle.