diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2020-12-17 10:06:50 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-17 10:06:50 +0100 |
commit | f3dccf5891eb4279c57b36123b5f1ba89957a1c1 (patch) | |
tree | e74c71cd3309af13bb435e1bc87f3e3316c77f89 /core | |
parent | aa64834f72082c3685b7826a5273323a6f6d4a40 (diff) | |
parent | 341b9cf15a6df3dae1ba6218b8545feec41fa728 (diff) |
Merge pull request #44393 from Calinou/add-stdout-flush-project-setting
Add a project setting to enable stdout flushing in release builds
Diffstat (limited to 'core')
-rw-r--r-- | core/io/logger.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/core/io/logger.cpp b/core/io/logger.cpp index f5cea00f28..241c72d310 100644 --- a/core/io/logger.cpp +++ b/core/io/logger.cpp @@ -30,6 +30,7 @@ #include "logger.h" +#include "core/config/project_settings.h" #include "core/os/dir_access.h" #include "core/os/os.h" #include "core/string/print_string.h" @@ -201,15 +202,14 @@ void RotatedFileLogger::logv(const char *p_format, va_list p_list, bool p_err) { } va_end(list_copy); file->store_buffer((uint8_t *)buf, len); + if (len >= static_buf_size) { Memory::free_static(buf); } -#ifdef DEBUG_ENABLED - const bool need_flush = true; -#else - bool need_flush = p_err; -#endif - if (need_flush) { + + if (p_err || GLOBAL_GET("application/run/flush_stdout_on_print")) { + // Don't always flush when printing stdout to avoid performance + // issues when `print()` is spammed in release builds. file->flush(); } } @@ -228,9 +228,11 @@ void StdLogger::logv(const char *p_format, va_list p_list, bool p_err) { vfprintf(stderr, p_format, p_list); } else { vprintf(p_format, p_list); -#ifdef DEBUG_ENABLED - fflush(stdout); -#endif + if (GLOBAL_GET("application/run/flush_stdout_on_print")) { + // Don't always flush when printing stdout to avoid performance + // issues when `print()` is spammed in release builds. + fflush(stdout); + } } } |