Ray Strode [Sun, 15 Nov 2009 18:38:54 +0000 (13:38 -0500)]
[event-loop] Sketch out cothreads implementation
This is just an experiment. It would let us potentially
avoid callback calling callback calling callback type code,
and instead have each handler yield when it needs to wait,
and resume where it left off when it's done waiting.
This is an initial draft. It isn't finished being written,
has only barely been tested, etc.
Charlie Brej [Sat, 14 Nov 2009 21:38:11 +0000 (21:38 +0000)]
[image] Optimise interpolate and rotate routines.
These are small optimisation to: terminate interpolation early when operating
on fully transparent regions and do rotations by pre-computing the step size
rather than calling cos/sin/atan. These use around 30% fewer instructions on
general images.
Charlie Brej [Wed, 28 Oct 2009 20:11:47 +0000 (20:11 +0000)]
[script] Add an "on quit" callback to scripted themes
The callback is called before the final sprite refresh and quit. This allows
the theme to tidy up the screen before handing over to the X fade and the
destop manager.
Ray Strode [Wed, 14 Oct 2009 15:29:55 +0000 (11:29 -0400)]
[text] Don't redraw views after password request
The text plugin doesn't have proper draw handlers at
the moment. Drawing happens outside of the draw handlers,
and the draw handlers only clear screen. Don't force
draw_area calls because that clears any drawing.
Charlie Brej [Tue, 13 Oct 2009 21:41:42 +0000 (22:41 +0100)]
[script] Sprite and Image objects inherit from an empty scalar
Sprite and Image objects now inherit from an empty scalar which can be used to
keep any random data assoceated with that object. Previously there was a
dangerous tendency to pass any scalar operations to the top inherrited scalar
which was the class prototype.
Charlie Brej [Tue, 13 Oct 2009 21:23:36 +0000 (22:23 +0100)]
[script] Change order of spriterefresh operations to remove an incorrect redraw
If a full refresh takes place, the system redraws the whole window but forgets
to remove sprites and update their old positions. The full window refresh is
now done last. Also old_width, and old_height are initialised at sprite
construction.
Charlie Brej [Tue, 13 Oct 2009 21:20:11 +0000 (22:20 +0100)]
[main] Truncate output debug file
Truncates the debug file to clear any previous data. Previously, if a run had a
shorter debug data, some data from a previous run would still be present at the
end of the file.
Frederic Crozat [Tue, 13 Oct 2009 16:01:24 +0000 (18:01 +0200)]
[ daemon ] handle plymouth:force-splash on kernel cmdline
When booting with init=..., plymouthd disables itself. It is problematic
when using bootchartd (bug #22180). plymouth:force-splash allows to
force plymouthd splash.
Ensure init= value is not used when starting plymouthd for shutdown.
Ray Strode [Fri, 9 Oct 2009 21:38:17 +0000 (17:38 -0400)]
[x11] initialize head on query not map
Do it for the same reason we did it in the frame-buffer
plugin in the previous commit. It's the "right" thing
to do and now that we map lazily, doing it the old way
is broken.
Charlie Brej [Sun, 4 Oct 2009 17:03:23 +0000 (18:03 +0100)]
[script] Give sensible unique-ish strings for all objects.
All objects can now be transformed into strings which allows them to be used as
hash indexes. Some rules do still apply. If an object is lost (freed....)
another object may take on the name of the lost one. The object address is used
to create a string in the form "#(0x123abc45)". NULL has the string "#NULL".
So arr[NULL] is the same as arr["#NULL"], and similar for the objects.
Ray Strode [Sun, 4 Oct 2009 14:47:36 +0000 (10:47 -0400)]
[branch-merge] Add x11 renderer plugin
This merges the "x11-renderer" branch to master.
In order to make debugging splash plugins easier,
and in order to make debugging multi-head renderering
possible on single head displays, Charlie wrote an
X11 rendering plugin.
This plugin displays plymouth in a running X session,
instead of on the console.
It currently only supports graphical plugins. At some
point it may grow support for text plugins, too, using
vte. That will take some reworking of the plymouth
daemon core.
This could some day serve as a basis for providing a
graphical theme chooser application (like
gnome-screensaver-preferences), although it's not clear
yet that's a good idea.
Right now, it's a great debugging and development tool,
though.
Ray Strode [Sun, 4 Oct 2009 01:44:26 +0000 (21:44 -0400)]
[x11] Throttle plymouth to X server
Some drivers completely choke with the amount of data plymouth is
sending over the wire. This makes sure that plymouth doesn't
keep assaulting the X server when it's already overworked by asking
the server to return back a pixel before continuing.
Ray Strode [Sat, 3 Oct 2009 05:28:13 +0000 (01:28 -0400)]
[console] Generalize mode override api
Previously it was force_text_mode ().
Now, we do ignore_mode_changes (). The
force_text_mode() behavior can be emulated by
setting the console mode to text mode and then
calling the new API.
This will be useful because we can make
ply_console_set_mode a NOOP for renderers that
don't render directly to the console.
Charlie Brej [Sat, 3 Oct 2009 01:06:06 +0000 (21:06 -0400)]
[renderer] Add start of X11 plugin
This renderer is useful for testing plymouth splash
plugins without leaving X. It simulates a multi-head
display by creating two X windows each representing
one monitor.
Ray Strode [Mon, 28 Sep 2009 22:03:11 +0000 (18:03 -0400)]
[branch-merge] Support multi-head renderering
This merges the "seat-rework" branch to master.
Instead of talking to /dev/fb, we now use libdrm
to set up the drawing area. This gives us the
functionality we need for querying the user's
monitor layout.
There are cases where /dev/fb works when the new
interfaces don't. For those cases we fall back
to /dev/fb.
Ray Strode [Mon, 28 Sep 2009 21:27:56 +0000 (17:27 -0400)]
[drm] Force fb backend if 1 head and ttm driver
Drivers backed by TTM memory manager don't support mapping the
kernel backed framebuffer console, so can't be used for doing
a smooth transition (unless you use /dev/fb). In single head
configurations, there isn't a big advantage to using libdrm
anyway, so we bail for TTM drivers.
Ray Strode [Wed, 16 Sep 2009 17:39:35 +0000 (13:39 -0400)]
[trigger] add new ignore_next_pull method
It can be cumbersome to wait for multiple operations to finish before
pulling a trigger. In those cases, one option would be to have a
separate trigger for each operation, and then wait until every trigger
is pulled before pulling the main trigger.
This commit instead allows a trigger to get pulled more
than once before it actually fires. By calling ignore_next_pull
once for each suboperaton, and immediately pulling the trigger,
it won't fire until the last operation finishes.
Ray Strode [Fri, 21 Aug 2009 23:21:53 +0000 (19:21 -0400)]
[libplybootsplash] Add pixel-display class
This is the graphical output portion of the window class. This
commit and the previous few commits lay the foundation needed
for dropping the window class and getting multi-head rendering support.
Ray Strode [Fri, 21 Aug 2009 23:21:53 +0000 (19:21 -0400)]
[libplybootsplash] Add text-display class
This is the text output portion of the window class. With this commit
and a subsequent commit to split out the graphical output portion,
we should be able to drop the window class.
As mentioned earlier, this will give us the flexibility we
need for multi-head rendering.
Ray Strode [Fri, 21 Aug 2009 13:53:33 +0000 (09:53 -0400)]
[libplybootsplash] Add renderer class
In order to support multiple rendering backends, and multi-head
monitor layouts, I'm moving the actually rendering to render
plugins.
Examples of plugins could be frame-buffer, drm fb, and x11
(for debugging).
The renderer class is responsible for loading the appropriate rendering
backend, and providing an interface for the rendering backend to
advertise multiple displays.
Right now we only check for a frame-buffer plugin, although, it isn't
implemented yet.
Ray Strode [Wed, 16 Sep 2009 20:57:13 +0000 (16:57 -0400)]
[libplybootsplash] Add terminal class
This is the terminal settings portion of the window class. With this
commit and subsequent commits to split out the higher level text output,
and graphical output portions, we should be able to drop window
in favor of the new display classes.