Only print to stdio before setup and during/after cleanup

This commit is contained in:
Mikael Hermansson
2026-03-24 14:27:25 +01:00
parent 64596092ae
commit a11e23e3e2
4 changed files with 53 additions and 6 deletions
+30 -6
View File
@@ -38,8 +38,12 @@
static PrintHandlerList *print_handler_list = nullptr;
static thread_local bool is_printing = false;
static void __print_fallback(const String &p_string, bool p_err) {
fprintf(p_err ? stderr : stdout, "While attempting to print a message, another message was printed:\n%s\n", p_string.utf8().get_data());
static void __print_fallback(const String &p_string, bool p_err, bool p_reentrance) {
if (p_reentrance) {
fprintf(p_err ? stderr : stdout, "While attempting to print an error, another error was printed:\n");
}
fprintf(p_err ? stderr : stdout, "%s\n", p_string.utf8().get_data());
}
void add_print_handler(PrintHandlerList *p_handler) {
@@ -78,8 +82,13 @@ void __print_line(const String &p_string) {
return;
}
if (!CoreGlobals::print_ready) {
__print_fallback(p_string, false, false);
return;
}
if (is_printing) {
__print_fallback(p_string, false);
__print_fallback(p_string, false, true);
return;
}
@@ -279,8 +288,13 @@ void __print_line_rich(const String &p_string) {
}
output += "\u001b[0m"; // Reset.
if (!CoreGlobals::print_ready) {
__print_fallback(output, false, false);
return;
}
if (is_printing) {
__print_fallback(output, false);
__print_fallback(output, false, true);
return;
}
@@ -301,8 +315,13 @@ void __print_line_rich(const String &p_string) {
}
void print_raw(const String &p_string) {
if (!CoreGlobals::print_ready) {
__print_fallback(p_string, false, false);
return;
}
if (is_printing) {
__print_fallback(p_string, true);
__print_fallback(p_string, true, true);
return;
}
@@ -318,8 +337,13 @@ void print_error(const String &p_string) {
return;
}
if (!CoreGlobals::print_ready) {
__print_fallback(p_string, false, false);
return;
}
if (is_printing) {
__print_fallback(p_string, true);
__print_fallback(p_string, true, true);
return;
}