This is to propose to abolish KLD screen saver modules.
KLD screen savers have the following problems/deficiencies.
- It is too easy to abuse the power of being run in the kernel
mode. The screen saver is invoked periodically once the console
becomes idle. It should not spend long time to draw something
to the screen. But, we may be tempted to do a bit more elaborate
drawing so that we get "interesting" effects. It's too easy to
degrade the system performance by staying in the screen saver
too long.
- While it is easy to manipulate the video board in the KLD module
(because we can go anywhere and access anything :-), there are
limitations. If you want to perform file I/O (to obtain some
bitmaps from files), or want to read some sort of configuration
file, there is no straight forward way to do so.
I propose to have user-land screen savers instead of KLD
screen savers.
- The user-land screen saver won't degrade system performance.
We can run it at lower priority. Even if we write very
complicated graphical screen saver, we have no fear of
breaking the system. (Unless we write a buggy program which
directly manipulates video card hardware...)
- The user-land screen saver can access files if necessary.
We shall provide the "screen saver daemon" and a set of "screen saver
programs." The screen saver daemon will run in the background and
periodically checks if the console is idle. When it finds no
activity in the console, it will launch a specified "screen saver
program."
Screen saver programs are ordinaly user programs which act just like
our current KLD screen savers, such as daemon_saver, log_saver,
blank_saver, etc, which draw something interesting in the screen. The
text-mode screen savers (deamon_saver, snake_saver, star_saver) are
written by using ncurses. The graphics-mode screen savers (logo_saver,
warp_saver, fire_saver, rain_saver) will be written with libvgl.
Blank_saver, apm_saver, fade_saver and green_saver are replaced by
programs which performs ioctl to the console to implement the same
effect as the current KLD version.
I will publish sample implementation once VESA support in -CURRENT
stabilizes.
Any comments?
Kazu
PS: the splash screen support has to remain in syscons as the
splash screen is put up when the kernel starts up...
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message