Add boot splash display time setting

Implements #8867.

(cherry picked from commit dad9683d11)
This commit is contained in:
Danil Alexeev 2022-06-28 18:13:00 +03:00 committed by Rémi Verschelde
parent 7dd322f83e
commit bf33de769a
2 changed files with 18 additions and 0 deletions

View file

@ -182,6 +182,9 @@
Path to an image used as the boot splash. If left empty, the default Godot Engine splash will be displayed instead. Path to an image used as the boot splash. If left empty, the default Godot Engine splash will be displayed instead.
[b]Note:[/b] Only effective if [member application/boot_splash/show_image] is [code]true[/code]. [b]Note:[/b] Only effective if [member application/boot_splash/show_image] is [code]true[/code].
</member> </member>
<member name="application/boot_splash/minimum_display_time" type="int" setter="" getter="" default="0">
Minimum boot splash display time (in milliseconds). It is not recommended to set too high values for this setting.
</member>
<member name="application/boot_splash/show_image" type="bool" setter="" getter="" default="true"> <member name="application/boot_splash/show_image" type="bool" setter="" getter="" default="true">
If [code]true[/code], displays the image specified in [member application/boot_splash/image] when the engine starts. If [code]false[/code], only displays the plain color specified in [member application/boot_splash/bg_color]. If [code]true[/code], displays the image specified in [member application/boot_splash/image] when the engine starts. If [code]false[/code], only displays the plain color specified in [member application/boot_splash/bg_color].
</member> </member>

View file

@ -1700,6 +1700,13 @@ bool Main::start() {
} }
} }
uint64_t minimum_time_msec = GLOBAL_DEF("application/boot_splash/minimum_display_time", 0);
ProjectSettings::get_singleton()->set_custom_property_info("application/boot_splash/minimum_display_time",
PropertyInfo(Variant::INT,
"application/boot_splash/minimum_display_time",
PROPERTY_HINT_RANGE,
"0,100,1,or_greater")); // No negative numbers.
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
if (doc_tool_path != "") { if (doc_tool_path != "") {
Engine::get_singleton()->set_editor_hint(true); // Needed to instance editor-only classes for their default values Engine::get_singleton()->set_editor_hint(true); // Needed to instance editor-only classes for their default values
@ -2182,6 +2189,14 @@ bool Main::start() {
OS::get_singleton()->set_main_loop(main_loop); OS::get_singleton()->set_main_loop(main_loop);
if (minimum_time_msec) {
uint64_t minimum_time = 1000 * minimum_time_msec;
uint64_t elapsed_time = OS::get_singleton()->get_ticks_usec();
if (elapsed_time < minimum_time) {
OS::get_singleton()->delay_usec(minimum_time - elapsed_time);
}
}
return true; return true;
} }