1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-10 13:00:37 +00:00

Merge pull request #41833 from dalexeev/splash_delay

Add boot splash minimum display time setting
This commit is contained in:
Yuri Sizov
2022-07-12 15:58:15 +03:00
committed by GitHub
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

@@ -2198,6 +2198,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
@@ -2718,6 +2725,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;
} }