Mention display driver and window mode in Copy System Info text

This is useful information to know, as the X11 display driver can be
used both on X11 natively and on Wayland through XWayland.

Certain editor issues only occur in multi-window mode
(or only in single-window mode). Some issues also only occur
on multi-monitor setups, so the monitor count is now listed.
This commit is contained in:
Hugo Locurcio 2024-09-20 17:07:11 +02:00
parent 2be730a05b
commit 107675f785
No known key found for this signature in database
GPG Key ID: 39E8F8BE30B0A49C
1 changed files with 27 additions and 8 deletions

View File

@ -4956,8 +4956,10 @@ String EditorNode::_get_system_info() const {
godot_version += " " + hash;
}
String display_session_type;
#ifdef LINUXBSD_ENABLED
const String display_server = OS::get_singleton()->get_environment("XDG_SESSION_TYPE").capitalize().replace(" ", ""); // `replace` is necessary, because `capitalize` introduces a whitespace between "x" and "11".
// `replace` is necessary, because `capitalize` introduces a whitespace between "x" and "11".
display_session_type = OS::get_singleton()->get_environment("XDG_SESSION_TYPE").capitalize().replace(" ", "");
#endif // LINUXBSD_ENABLED
String driver_name = OS::get_singleton()->get_current_rendering_driver_name().to_lower();
String rendering_method = OS::get_singleton()->get_current_rendering_method().to_lower();
@ -5018,16 +5020,33 @@ String EditorNode::_get_system_info() const {
// Join info.
Vector<String> info;
info.push_back(godot_version);
String distribution_display_session_type = distribution_name;
if (!distribution_version.is_empty()) {
info.push_back(distribution_name + " " + distribution_version);
} else {
info.push_back(distribution_name);
distribution_display_session_type += " " + distribution_version;
}
if (!display_session_type.is_empty()) {
distribution_display_session_type += " on " + display_session_type;
}
info.push_back(distribution_display_session_type);
String display_driver_window_mode;
#ifdef LINUXBSD_ENABLED
if (!display_server.is_empty()) {
info.push_back(display_server);
}
// `replace` is necessary, because `capitalize` introduces a whitespace between "x" and "11".
display_driver_window_mode = DisplayServer::get_singleton()->get_name().capitalize().replace(" ", "") + " display driver";
#endif // LINUXBSD_ENABLED
if (!display_driver_window_mode.is_empty()) {
display_driver_window_mode += ", ";
}
display_driver_window_mode += get_viewport()->is_embedding_subwindows() ? "Single-window" : "Multi-window";
if (DisplayServer::get_singleton()->get_screen_count() == 1) {
display_driver_window_mode += ", " + itos(DisplayServer::get_singleton()->get_screen_count()) + " monitor";
} else {
display_driver_window_mode += ", " + itos(DisplayServer::get_singleton()->get_screen_count()) + " monitors";
}
info.push_back(display_driver_window_mode);
info.push_back(vformat("%s (%s)", driver_name, rendering_method));
String graphics;
@ -5046,7 +5065,7 @@ String EditorNode::_get_system_info() const {
}
info.push_back(graphics);
info.push_back(vformat("%s (%d Threads)", processor_name, processor_count));
info.push_back(vformat("%s (%d threads)", processor_name, processor_count));
return String(" - ").join(info);
}