Add boot splash display time setting

Implements #8867.
This commit is contained in:
Danil Alexeev 2022-06-28 18:13:00 +03:00
parent 2ea7765f76
commit dad9683d11
No known key found for this signature in database
GPG key ID: 124453E157DA8DC7
2 changed files with 19 additions and 0 deletions

View file

@ -203,6 +203,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

@ -2175,6 +2175,13 @@ bool Main::start() {
#endif #endif
} }
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,suffix:ms")); // No negative numbers.
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
if (!doc_tool_path.is_empty()) { if (!doc_tool_path.is_empty()) {
// Needed to instance editor-only classes for their default values // Needed to instance editor-only classes for their default values
@ -2692,6 +2699,15 @@ bool Main::start() {
if (movie_writer) { if (movie_writer) {
movie_writer->begin(DisplayServer::get_singleton()->window_get_size(), fixed_fps, write_movie_path); movie_writer->begin(DisplayServer::get_singleton()->window_get_size(), fixed_fps, write_movie_path);
} }
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;
} }