diff --git a/src/libply-splash-core/ply-text-display.c b/src/libply-splash-core/ply-text-display.c index 7bf6e06d..6eaea421 100644 --- a/src/libply-splash-core/ply-text-display.c +++ b/src/libply-splash-core/ply-text-display.c @@ -43,7 +43,7 @@ #include "ply-utils.h" #ifndef CLEAR_SCREEN_SEQUENCE -#define CLEAR_SCREEN_SEQUENCE "\033[2J" +#define CLEAR_SCREEN_SEQUENCE "\033[2J\033[3J" #endif #ifndef CLEAR_LINE_SEQUENCE @@ -150,7 +150,7 @@ ply_text_display_set_cursor_position (ply_text_display_t *display, void ply_text_display_clear_screen (ply_text_display_t *display) { - if (ply_is_tracing ()) + if (ply_is_tracing_to_terminal ()) return; ply_terminal_write (display->terminal, diff --git a/src/libply/ply-logger.c b/src/libply/ply-logger.c index 03dd347f..749c9da5 100644 --- a/src/libply/ply-logger.c +++ b/src/libply/ply-logger.c @@ -61,6 +61,7 @@ typedef struct struct _ply_logger { int output_fd; + bool output_fd_is_terminal; char *filename; char *buffer; @@ -229,6 +230,7 @@ ply_logger_new (void) logger = calloc (1, sizeof(ply_logger_t)); logger->output_fd = -1; + logger->output_fd_is_terminal = false; logger->filename = NULL; logger->is_enabled = true; logger->tracing_is_enabled = false; @@ -363,6 +365,7 @@ ply_logger_set_output_fd (ply_logger_t *logger, assert (logger != NULL); logger->output_fd = fd; + logger->output_fd_is_terminal = isatty(fd); } int @@ -580,6 +583,15 @@ ply_logger_is_tracing_enabled (ply_logger_t *logger) return logger->tracing_is_enabled != false; } + +bool +ply_logger_is_tracing_to_terminal (ply_logger_t *logger) +{ + assert (logger != NULL); + + return logger->tracing_is_enabled && logger->output_fd_is_terminal; +} + #endif /* PLY_ENABLE_TRACING */ /* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */ diff --git a/src/libply/ply-logger.h b/src/libply/ply-logger.h index 0015c0cf..8d8ee871 100644 --- a/src/libply/ply-logger.h +++ b/src/libply/ply-logger.h @@ -81,6 +81,7 @@ ply_logger_t *ply_logger_get_error_default (void); #ifdef PLY_ENABLE_TRACING void ply_logger_toggle_tracing (ply_logger_t *logger); bool ply_logger_is_tracing_enabled (ply_logger_t *logger); +bool ply_logger_is_tracing_to_terminal (ply_logger_t *logger); #define ply_logger_trace(logger, format, args ...) \ do \ @@ -113,6 +114,7 @@ bool ply_logger_is_tracing_enabled (ply_logger_t *logger); #define ply_logger_trace(logger, format, args ...) #define ply_logger_toggle_tracing(logger) #define ply_logger_is_tracing_enabled(logger) (false) +#define ply_logger_is_tracing_to_terminal(logger) (false) #endif /* PLY_ENABLE_TRACING */ /* convenience macros @@ -140,6 +142,8 @@ bool ply_logger_is_tracing_enabled (ply_logger_t *logger); ply_logger_toggle_tracing (ply_logger_get_error_default ()) #define ply_is_tracing() \ ply_logger_is_tracing_enabled (ply_logger_get_error_default ()) +#define ply_is_tracing_to_terminal() \ + ply_logger_is_tracing_to_terminal (ply_logger_get_error_default ()) #define ply_trace(format, args ...) \ ply_logger_trace (ply_logger_get_error_default (), format, ## args) diff --git a/src/main.c b/src/main.c index 0ad34fc4..122cb734 100644 --- a/src/main.c +++ b/src/main.c @@ -1976,7 +1976,7 @@ initialize_environment (state_t *state) state->entry_buffer = ply_buffer_new (); state->messages = ply_list_new (); - if (!ply_is_tracing ()) + if (!ply_is_tracing_to_terminal ()) redirect_standard_io_to_dev_null (); ply_trace ("Making sure " PLYMOUTH_RUNTIME_DIR " exists"); diff --git a/src/plugins/splash/details/plugin.c b/src/plugins/splash/details/plugin.c index f534450b..254f682b 100644 --- a/src/plugins/splash/details/plugin.c +++ b/src/plugins/splash/details/plugin.c @@ -237,8 +237,10 @@ 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)) + if (ply_terminal_open (terminal)) { + ply_text_display_clear_screen (view->display); ply_terminal_activate_vt (terminal); + } ply_list_append_data (plugin->views, view); diff --git a/src/plugins/splash/text/plugin.c b/src/plugins/splash/text/plugin.c index 7805b9e8..3fa01a77 100644 --- a/src/plugins/splash/text/plugin.c +++ b/src/plugins/splash/text/plugin.c @@ -233,11 +233,10 @@ view_hide (view_t *view) terminal = ply_text_display_get_terminal (view->display); + ply_terminal_reset_colors (terminal); ply_text_display_set_background_color (view->display, PLY_TERMINAL_COLOR_DEFAULT); ply_text_display_clear_screen (view->display); ply_text_display_show_cursor (view->display); - - ply_terminal_reset_colors (terminal); } } diff --git a/src/plugins/splash/tribar/plugin.c b/src/plugins/splash/tribar/plugin.c index 1778822a..7c33e184 100644 --- a/src/plugins/splash/tribar/plugin.c +++ b/src/plugins/splash/tribar/plugin.c @@ -239,11 +239,10 @@ view_hide (view_t *view) terminal = ply_text_display_get_terminal (view->display); + ply_terminal_reset_colors (terminal); ply_text_display_set_background_color (view->display, PLY_TERMINAL_COLOR_DEFAULT); ply_text_display_clear_screen (view->display); ply_text_display_show_cursor (view->display); - - ply_terminal_reset_colors (terminal); } }