diff --git a/src/plugins/splash/details/plugin.c b/src/plugins/splash/details/plugin.c index 094ee58c..8321456c 100644 --- a/src/plugins/splash/details/plugin.c +++ b/src/plugins/splash/details/plugin.c @@ -202,6 +202,29 @@ view_write (view_t *view, ply_terminal_write (terminal, "%.*s", (int) number_of_bytes, text); } +static void +view_write_boot_buffer (view_t *view) +{ + ply_boot_splash_plugin_t *plugin; + ply_terminal_t *terminal; + + plugin = view->plugin; + + terminal = ply_text_display_get_terminal (view->display); + + ply_text_display_clear_screen (view->display); + ply_terminal_activate_vt (terminal); + + if (plugin->boot_buffer != NULL) { + size_t size; + const char *bytes; + + size = ply_buffer_get_size (plugin->boot_buffer); + bytes = ply_buffer_get_bytes (plugin->boot_buffer); + view_write (view, bytes, size); + } +} + static void write_on_views (ply_boot_splash_plugin_t *plugin, const char *text, @@ -237,20 +260,12 @@ add_text_display (ply_boot_splash_plugin_t *plugin, view = view_new (plugin, display); terminal = ply_text_display_get_terminal (view->display); - if (ply_terminal_open (terminal)) { - ply_text_display_clear_screen (view->display); - ply_terminal_activate_vt (terminal); - } + ply_terminal_open (terminal); ply_list_append_data (plugin->views, view); - if (plugin->boot_buffer != NULL) { - size_t size; - const char *bytes; - - size = ply_buffer_get_size (plugin->boot_buffer); - bytes = ply_buffer_get_bytes (plugin->boot_buffer); - view_write (view, bytes, size); + if (ply_terminal_is_vt (terminal)) { + view_write_boot_buffer (view); } }