Add --no-header option to clean output

* Do not print empty line when header is disabled
* Do not print Vulcan header
* Also add "Print header" project setting (default On)
  (suggested by @kaissouDev)
* Add docs for the project setting
  (with suggestions by @Mickeon and @akien-mga)

Co-authored-by: Micky <66727710+Mickeon@users.noreply.github.com>
Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
This commit is contained in:
Anatoli Babenia 2023-07-07 20:07:09 +03:00
parent 907db8eebc
commit e25cfffc7f
7 changed files with 27 additions and 5 deletions

View file

@ -258,6 +258,12 @@ bool Engine::is_printing_error_messages() const {
return CoreGlobals::print_error_enabled;
}
void Engine::print_header(const String &p_string) const {
if (_print_header) {
print_line(p_string);
}
}
void Engine::add_singleton(const Singleton &p_singleton) {
ERR_FAIL_COND_MSG(singleton_ptrs.has(p_singleton.name), vformat("Can't register singleton '%s' because it already exists.", p_singleton.name));
singletons.push_back(p_singleton);

View file

@ -84,6 +84,8 @@ private:
bool project_manager_hint = false;
bool extension_reloading = false;
bool _print_header = true;
static Engine *singleton;
String write_movie_path;
@ -123,6 +125,7 @@ public:
void set_print_error_messages(bool p_enabled);
bool is_printing_error_messages() const;
void print_header(const String &p_string) const;
void set_frame_delay(uint32_t p_msec);
uint32_t get_frame_delay() const;

View file

@ -1393,6 +1393,7 @@ ProjectSettings::ProjectSettings() {
GLOBAL_DEF_BASIC(PropertyInfo(Variant::STRING, "application/run/main_scene", PROPERTY_HINT_FILE, "*.tscn,*.scn,*.res"), "");
GLOBAL_DEF("application/run/disable_stdout", false);
GLOBAL_DEF("application/run/disable_stderr", false);
GLOBAL_DEF("application/run/print_header", true);
GLOBAL_DEF_RST("application/config/use_hidden_project_data_directory", true);
GLOBAL_DEF("application/config/use_custom_user_dir", false);
GLOBAL_DEF("application/config/custom_user_dir_name", "");

View file

@ -353,6 +353,9 @@
This setting can be overridden using the [code]--max-fps &lt;fps&gt;[/code] command line argument (including with a value of [code]0[/code] for unlimited framerate).
[b]Note:[/b] This property is only read when the project starts. To change the rendering FPS cap at runtime, set [member Engine.max_fps] instead.
</member>
<member name="application/run/print_header" type="bool" setter="" getter="" default="true">
If [code]true[/code], the engine header is printed in the console on startup. This header describes the current version of the engine, as well as the renderer being used. This behavior can also be disabled on the command line with the [code]--no-header[/code] option.
</member>
<member name="audio/buses/channel_disable_threshold_db" type="float" setter="" getter="" default="-60.0">
Audio buses will disable automatically when sound goes below a given dB threshold for a given time. This saves CPU as effects assigned to that bus will no longer do any processing.
</member>

View file

@ -193,7 +193,7 @@ typedef void(GLAPIENTRY *DEBUGPROCARB)(GLenum source,
typedef void(GLAPIENTRY *DebugMessageCallbackARB)(DEBUGPROCARB callback, const void *userParam);
void RasterizerGLES3::initialize() {
print_line(vformat("OpenGL API %s - Compatibility - Using Device: %s - %s", RS::get_singleton()->get_video_adapter_api_version(), RS::get_singleton()->get_video_adapter_vendor(), RS::get_singleton()->get_video_adapter_name()));
Engine::get_singleton()->print_header(vformat("OpenGL API %s - Compatibility - Using Device: %s - %s", RS::get_singleton()->get_video_adapter_api_version(), RS::get_singleton()->get_video_adapter_vendor(), RS::get_singleton()->get_video_adapter_name()));
}
void RasterizerGLES3::finalize() {

View file

@ -483,6 +483,7 @@ void Main::print_help(const char *p_binary) {
print_help_option("--version", "Display the version string.\n");
print_help_option("-v, --verbose", "Use verbose stdout mode.\n");
print_help_option("--quiet", "Quiet mode, silences stdout messages. Errors are still displayed.\n");
print_help_option("--no-header", "Do not print engine version and rendering method header on startup.\n");
print_help_title("Run options");
print_help_option("--, ++", "Separator for user-provided arguments. Following arguments are not used by the engine, but can be read from `OS.get_cmdline_user_args()`.\n");
@ -1013,6 +1014,9 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
quiet_stdout = true;
} else if (I->get() == "--no-header") {
Engine::get_singleton()->_print_header = false;
} else if (I->get() == "--audio-driver") { // audio driver
if (I->next()) {
@ -1833,6 +1837,10 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
if (bool(GLOBAL_GET("application/run/disable_stderr"))) {
CoreGlobals::print_error_enabled = false;
}
if (!bool(GLOBAL_GET("application/run/print_header"))) {
// --no-header option for project settings.
Engine::get_singleton()->_print_header = false;
}
if (quiet_stdout) {
CoreGlobals::print_line_enabled = false;
@ -2449,7 +2457,7 @@ Error Main::setup2() {
set_current_thread_safe_for_nodes(true);
// Print engine name and version
print_line(String(VERSION_NAME) + " v" + get_full_version_string() + " - " + String(VERSION_WEBSITE));
Engine::get_singleton()->print_header(String(VERSION_NAME) + " v" + get_full_version_string() + " - " + String(VERSION_WEBSITE));
#ifdef TOOLS_ENABLED
if (editor || project_manager || cmdline_tool) {
@ -2742,8 +2750,6 @@ Error Main::setup2() {
AudioDriverManager::initialize(audio_driver_idx);
print_line(" "); // Add a blank line for readability.
// Right moment to create and initialize the audio server.
audio_server = memnew(AudioServer);
audio_server->init();
@ -2763,6 +2769,9 @@ Error Main::setup2() {
OS::get_singleton()->benchmark_end_measure("Startup", "Servers");
// Add a blank line for readability.
Engine::get_singleton()->print_header("");
register_core_singletons();
/* Initialize the main window and boot screen */

View file

@ -4983,7 +4983,7 @@ Error RenderingDevice::initialize(RenderingContextDriver *p_context, DisplayServ
}
// Output our device version.
print_line(vformat("%s %s - %s - Using Device #%d: %s - %s", get_device_api_name(), get_device_api_version(), rendering_method, device_index, _get_device_vendor_name(device), device.name));
Engine::get_singleton()->print_header(vformat("%s %s - %s - Using Device #%d: %s - %s", get_device_api_name(), get_device_api_version(), rendering_method, device_index, _get_device_vendor_name(device), device.name));
}
// Pick the main queue family. It is worth noting we explicitly do not request the transfer bit, as apparently the specification defines