diff options
| author | Ray Strode <rstrode@redhat.com> | 2008-05-29 00:02:22 -0400 |
|---|---|---|
| committer | Ray Strode <rstrode@redhat.com> | 2008-05-29 00:02:22 -0400 |
| commit | dd3e2229d73f1f264cb07aab4765196307ac9e97 (patch) | |
| tree | 18d039aeef54648af0b149d2152a8d437f4214e4 /src/splash-plugins/text/plugin.c | |
| parent | d76fcfed45401305fbb728d5bdd708df4364b313 (diff) | |
| download | plymouth-dd3e2229d73f1f264cb07aab4765196307ac9e97.tar.gz plymouth-dd3e2229d73f1f264cb07aab4765196307ac9e97.tar.xz plymouth-dd3e2229d73f1f264cb07aab4765196307ac9e97.zip | |
Drop line editing plugin vtable functions. Use window directly.
There was a sort useless layer of indirection between the
window object and splash plugins. It ended up with
functions like:
void
on_backspace (ply_splash_plugin_t *plugin)
{
plugin->interface->on_backspace (plugin);
}
Since the individual plugins are aware of the window object
anyway, they can register their own on_backspace et al handlers
without going through the ply_splash_plugin_t layer.
Diffstat (limited to 'src/splash-plugins/text/plugin.c')
| -rw-r--r-- | src/splash-plugins/text/plugin.c | 79 |
1 files changed, 45 insertions, 34 deletions
diff --git a/src/splash-plugins/text/plugin.c b/src/splash-plugins/text/plugin.c index bfa591a..a342fa7 100644 --- a/src/splash-plugins/text/plugin.c +++ b/src/splash-plugins/text/plugin.c @@ -111,6 +111,37 @@ detach_from_event_loop (ply_boot_splash_plugin_t *plugin) ply_trace ("detaching from event loop"); } +void +on_keyboard_input (ply_boot_splash_plugin_t *plugin, + const char *keyboard_input, + size_t character_size) +{ + if (plugin->keyboard_input_is_hidden) + write (STDOUT_FILENO, "•", strlen ("•")); + else + write (STDOUT_FILENO, keyboard_input, character_size); +} + +void +on_backspace (ply_boot_splash_plugin_t *plugin) +{ + write (STDOUT_FILENO, BACKSPACE, strlen (BACKSPACE)); +} + +void +on_enter (ply_boot_splash_plugin_t *plugin, + const char *line) +{ + if (plugin->password_answer_handler != NULL) + { + plugin->password_answer_handler (plugin->password_answer_data, + line); + plugin->keyboard_input_is_hidden = false; + plugin->password_answer_handler = NULL; + write (STDOUT_FILENO, CLEAR_LINE_SEQUENCE, strlen (CLEAR_LINE_SEQUENCE)); + } +} + bool show_splash_screen (ply_boot_splash_plugin_t *plugin, ply_event_loop_t *loop, @@ -119,6 +150,16 @@ show_splash_screen (ply_boot_splash_plugin_t *plugin, { assert (plugin != NULL); + ply_window_set_keyboard_input_handler (window, + (ply_window_keyboard_input_handler_t) + on_keyboard_input, plugin); + ply_window_set_backspace_handler (window, + (ply_window_backspace_handler_t) + on_backspace, plugin); + ply_window_set_enter_handler (window, + (ply_window_enter_handler_t) + on_enter, plugin); + plugin->loop = loop; ply_event_loop_watch_for_exit (loop, (ply_event_loop_exit_handler_t) detach_from_event_loop, @@ -150,6 +191,10 @@ hide_splash_screen (ply_boot_splash_plugin_t *plugin, ply_trace ("hiding splash screen"); + ply_window_set_keyboard_input_handler (window, NULL, NULL); + ply_window_set_backspace_handler (window, NULL, NULL); + ply_window_set_enter_handler (window, NULL, NULL); + if (plugin->loop != NULL) { ply_event_loop_stop_watching_for_exit (plugin->loop, @@ -172,37 +217,6 @@ ask_for_password (ply_boot_splash_plugin_t *plugin, plugin->keyboard_input_is_hidden = true; } -void -on_keyboard_input (ply_boot_splash_plugin_t *plugin, - const char *keyboard_input, - size_t character_size) -{ - if (plugin->keyboard_input_is_hidden) - write (STDOUT_FILENO, "•", strlen ("•")); - else - write (STDOUT_FILENO, keyboard_input, character_size); -} - -void -on_backspace (ply_boot_splash_plugin_t *plugin) -{ - write (STDOUT_FILENO, BACKSPACE, strlen (BACKSPACE)); -} - -void -on_enter (ply_boot_splash_plugin_t *plugin, - const char *line) -{ - if (plugin->password_answer_handler != NULL) - { - plugin->password_answer_handler (plugin->password_answer_data, - line); - plugin->keyboard_input_is_hidden = false; - plugin->password_answer_handler = NULL; - write (STDOUT_FILENO, CLEAR_LINE_SEQUENCE, strlen (CLEAR_LINE_SEQUENCE)); - } -} - ply_boot_splash_plugin_interface_t * ply_boot_splash_plugin_get_interface (void) { @@ -214,9 +228,6 @@ ply_boot_splash_plugin_get_interface (void) .update_status = update_status, .hide_splash_screen = hide_splash_screen, .ask_for_password = ask_for_password, - .on_keyboard_input = on_keyboard_input, - .on_backspace = on_backspace, - .on_enter = on_enter }; return &plugin_interface; |
